home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-13
/
me_cd22.zip
/
MUTT2.ZIP
/
HOOK.MUT
< prev
next >
Wrap
Text File
|
1992-04-27
|
3KB
|
81 lines
;; Hook.mut : Hook central
;; These routines let lots of routines share ME hooks. For example, if you
;; want foo to called from buffer-created-hook, then just
;; (register-hook BUFFER-CREATED-HOOK "foo") and every time
;; (buffer-created-hook) is called, (foo) will be called.
;; Notes:
;; DO NOT defun buffer-created-hook or other hooks! If you do, you'll
;; ruin the party for everybody.
;; Hooks not here:
;; modeline-hook : Needs to be handled differently. See modeline.mut.
;; key-pressed-hook : Slows things down too much. Your on your own.
;; I define some of own hooks: the "I" ones. These are subsets of
;; existing hooks that are called when a buffer is Interactive. I do
;; this to avoid doing a bunch of work when I don't need to.
;; C Durland 10/89 Public Domain
(include me2.h)
(list
buffer-created-list
Ibuffer-created-list ;; interactive buffer created
file-read-list
Ifile-read-list ;; interactive file read
enter-ME-list
leave-ME-list
process-list
)
(defun
register-hook (int hook-id)(string who-u-gonna-call)
{
(switch hook-id
BUFFER-CREATED-HOOK (add-hook buffer-created-list who-u-gonna-call)
IBUFFER-CREATED-HOOK (add-hook Ibuffer-created-list who-u-gonna-call)
READ-FILE-HOOK (add-hook file-read-list who-u-gonna-call)
IREAD-FILE-HOOK (add-hook Ifile-read-list who-u-gonna-call)
ENTER-ME-HOOK (add-hook enter-ME-list who-u-gonna-call)
LEAVE-ME-HOOK (add-hook leave-ME-list who-u-gonna-call)
PROCESS-HOOK (add-hook process-list who-u-gonna-call)
)
}
enter-ME-hook { (call-hooks enter-ME-list) }
leave-ME-hook { (call-hooks leave-ME-list) }
process-hook { (call-hooks process-list (push-args 0)) }
buffer-created-hook
{
(call-hooks buffer-created-list)
(if (!= 0 (bit-and BFInteractive (buffer-flags -1)))
(call-hooks Ibuffer-created-list))
}
read-file-hook
{
(call-hooks file-read-list)
(if (!= 0 (bit-and BFInteractive (buffer-flags -1)))
(call-hooks Ifile-read-list))
}
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;; Gory Details ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun
call-hooks (list hook-list)(hook-args) HIDDEN
{
(int j z)
(for { (j 0)(z (length-of hook-list)) } (!= j z) (+= j 1)
(floc (extract-element hook-list j)(push-args 1))) ;; call the hook
}
add-hook (list hook-list) (string name) HIDDEN
{
(int j z)
;; Check to see if name is already registered
(for { (j 0)(z (length-of hook-list)) } (!= j z) (+= j 1)
(if (== name (extract-element hook-list j)) (done)))
(insert-object hook-list 0 name) ;; put name in list
}
)